/******************************************************************* DOExchange.h *********************************************************************/ #include "includes/Project.h" #define CONFIG_FILE "DOpus5:Settings/DOExchange.prefs" /********************************************************************/ // some defines for IPC_Commands // our template was // "Hide/S,Show/S,BGC=BackgroundColour/N,TC=TextColour/N,N=NewName/K,Quit/S" #define IPCCMD_HIDE 1 << 0 #define IPCCMD_SHOW 1 << 1 #define IPCCMD_BGC 1 << 2 #define IPCCMD_TC 1 << 3 #define IPCCMD_NAME 1 << 4 #define IPCCMD_QUIT 1 << 5 #define ARG_BGC fargs->FA_Arguments[2] #define ARG_TC fargs->FA_Arguments[3] #define ARG_NAME fargs->FA_Arguments[4] #define POPID_SAVE 0xFFF0 #define POPID_QUIT 0xFFF1 #define CXID_USER 100 /********************************************************************/ // some structures // since the Amiga developers did mean noone else should do an // Exchange program, the next both structures are the results of some // experiments and may (does) not match the real structures, // but I think I've got what I need :) // a kind of CxMsg typedef struct { struct Message msg; // ln_Type should be NT_MESSAGE ULONG a; ULONG ID; // message id UBYTE c; UBYTE d; UBYTE Code; // message type } FakeMsg; // a kind of CxObj typedef struct { char dummy1[14]; UBYTE flags; char dummy2[125]; struct MsgPort *cx_port; } CX_OBJ; // and now back to "normal" stuctures typedef struct _SubMenu_Node { struct MinNode minnode; struct MinList submenu; } SubMenu_Node; typedef struct _DOE_Data { ULONG a4; struct Library *module; struct Library *library; IPCData *ipc; APTR messages; APTR notify_handle; struct MsgPort *notify_port; struct Screen *screen; struct NewBroker nb; struct MsgPort *sender; FakeMsg *fmsg; PopUpMenu popmenu; PopUpItem *popitem; PopUpItem *compare; struct MinList submenus; SubMenu_Node *submenu_node; struct Node *ptr_node; ULONG entry_count; ULONG signals; BOOL stop; USHORT flags; CxObj *our_cxobj; CxObj *filter; CxObj *new_obj; struct Window *win; WindowID id; struct IBox ibox; struct IntuiText itext; char name[16]; } DOE_Data; typedef struct _PassData { UBYTE FrontPen; UBYTE BackPen; STRPTR name; } PassData; struct Gadget draggadget = { NULL, 0, 0, 0, 0, GFLG_GADGHNONE | GFLG_RELWIDTH | GFLG_RELHEIGHT, GACT_RELVERIFY, GTYP_WDRAGGING, NULL, NULL, NULL, NULL, NULL, NULL, NULL }; void DOExchange( STRPTR args, struct Screen *screen, IPCData *ipc );